package com.qijian.maindata.domain.kingdee;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

@Data
public class KingdeeApPayableRequisition {

    @JSONField(name = "Model")
    private KingdeeApPayableRequisitionModel Model;

    @Data
    public static class KingdeeApPayableRequisitionModel {
        @JSONField(name = "FID", ordinal = 1)
        private String FID;
        @JSONField(name = "FBillTypeID", ordinal = 2)
        private FNumber FBillTypeID;
        @JSONField(name = "FBillNo", ordinal = 3)
        private String FBillNo;
        @JSONField(name = "FISINIT", ordinal = 4)
        private String FISINIT;
        @JSONField(name = "FDATE", ordinal = 5)
        private String FDATE;
        @JSONField(name = "FENDDATE_H", ordinal = 6)
        private String FENDDATE_H;
        @JSONField(name = "FDOCUMENTSTATUS", ordinal =7)
        private String FDOCUMENTSTATUS;
        @JSONField(name = "FSUPPLIERID", ordinal = 8)
        private FNumber FSUPPLIERID;
        @JSONField(name = "FCURRENCYID", ordinal = 9)
        private FNumber FCURRENCYID;
        @JSONField(name = "FPayConditon", ordinal = 10)
        private FNumber FPayConditon;
        @JSONField(name = "FISPRICEEXCLUDETAX", ordinal = 11)
        private String FISPRICEEXCLUDETAX;
        @JSONField(name = "FSourceBillType", ordinal = 12)
        private String FSourceBillType;
        @JSONField(name = "FBUSINESSTYPE", ordinal = 13)
        private String FBUSINESSTYPE;
        @JSONField(name = "FISTAX", ordinal = 14)
        private String FISTAX;
        @JSONField(name = "FSETTLEORGID", ordinal = 15)
        private FNumber FSETTLEORGID;
        @JSONField(name = "FPAYORGID", ordinal = 16)
        private FNumber FPAYORGID;
        @JSONField(name = "FSetAccountType", ordinal = 17)
        private String FSetAccountType;
        @JSONField(name = "FISTAXINCOST", ordinal = 18)
        private String FISTAXINCOST;
        @JSONField(name = "FAP_Remark", ordinal = 19)
        private String FAP_Remark;
        @JSONField(name = "FISHookMatch", ordinal = 20)
        private String FISHookMatch;
        @JSONField(name = "FACCOUNTSYSTEM", ordinal = 21)
        private FNumber FACCOUNTSYSTEM;
        @JSONField(name = "FPURCHASEDEPTID", ordinal = 22)
        private FNumber FPURCHASEDEPTID;
        @JSONField(name = "FPURCHASERGROUPID", ordinal = 23)
        private FNumber FPURCHASERGROUPID;
        @JSONField(name = "FPURCHASERID", ordinal = 24)
        private FNumber FPURCHASERID;
        @JSONField(name = "FCancelStatus", ordinal = 25)
        private String FCancelStatus;
        @JSONField(name = "FISBYIV", ordinal = 26)
        private String FISBYIV;
        @JSONField(name = "FISGENHSADJ", ordinal = 27)
        private String FISGENHSADJ;
        @JSONField(name = "FMatchMethodID", ordinal = 28)
        private BigDecimal FMatchMethodID;
        @JSONField(name = "FISINVOICEARLIER", ordinal = 29)
        private String FISINVOICEARLIER;
        @JSONField(name = "FScanPoint", ordinal = 30)
        private FNumber FScanPoint;
        @JSONField(name = "FWBOPENQTY", ordinal = 31)
        private FNumber FWBOPENQTY;
        @JSONField(name = "F_ora_Date", ordinal = 32)
        private String F_ora_Date;
        @JSONField(name = "FPRESETBASE1", ordinal = 33)
        private FNumber FPRESETBASE1;
        @JSONField(name = "F_ora_Remarks", ordinal = 34)
        private String F_ora_Remarks;
        @JSONField(name = "FPRESETBASE2", ordinal = 35)
        private FNumber FPRESETBASE2;
        @JSONField(name = "FPRESETTEXT1", ordinal = 36)
        private String FPRESETTEXT1;
        @JSONField(name = "FPRESETTEXT2", ordinal = 37)
        private String FPRESETTEXT2;
        @JSONField(name = "FPRESETASSISTANT2", ordinal = 38)
        private FNumber FPRESETASSISTANT2;
        @JSONField(name = "FPRESETASSISTANT1", ordinal = 39)
        private FNumber FPRESETASSISTANT1;
        @JSONField(name = "F_ora_Integer1", ordinal = 40)
        private BigDecimal F_ora_Integer1;
        @JSONField(name = "FIsGeneratePlanByCostItem", ordinal = 41)
        private String FIsGeneratePlanByCostItem;
        @JSONField(name = "F_ora_Text5", ordinal = 42)
        private String F_ora_Text5;
        @JSONField(name = "FSCPCONFIRMERID", ordinal = 43)
        private FUserID FSCPCONFIRMERID;
        @JSONField(name = "F_ora_BGDH", ordinal = 44)
        private String F_ora_BGDH;
         @JSONField(name = "FSCPCONFIRMDATE", ordinal = 45)
        private String FSCPCONFIRMDATE;
        @JSONField(name = "F_ora_BGFPH", ordinal = 46)
        private String F_ora_BGFPH;
        @JSONField(name = "F_ora_Text6", ordinal = 47)
        private String F_ora_Text6;
        @JSONField(name = "F_ora_OrgId", ordinal = 48)
        private FNumber F_ora_OrgId;
        @JSONField(name = "FOrderDiscountAmountFor", ordinal = 49)
        private String FOrderDiscountAmountFor;
        @JSONField(name = "F_ora_Text7", ordinal = 50)
        private String F_ora_Text7;
        @JSONField(name = "F_YIIM_Assistant", ordinal = 51)
        private FNumber F_YIIM_Assistant;
        @JSONField(name = "FsubHeadSuppiler", ordinal = 52)
        private FsubHeadSuppiler FsubHeadSuppiler;
        @JSONField(name = "FsubHeadFinc", ordinal = 53)
        private FsubHeadFinc FsubHeadFinc;
        @JSONField(name = "FEntityDetail", ordinal = 54)
        private List<FEntityDetail> FEntityDetail;
        @JSONField(name = "FEntityPlan", ordinal = 55)
        private FEntityPlan FEntityPlan;
        @JSONField(name = "FRecInvInfo", ordinal = 56)
        private FRecInvInfo FRecInvInfo;

        private String FPURCHASEORGID;
    }

    @Data
    public static class FNumber {
        @JSONField(name = "FNumber")
        private String FNumber;

        public FNumber(String FNumber) {
            this.FNumber = FNumber;
        }
    }
    @Data
    public static class FUserID {
        @JSONField(name = "FUserID")
        private String FUserID;

        public FUserID(String FUserID) {
            this.FUserID = FUserID;
        }
    }

    @Data
    public static class F_ora_Text {
        @JSONField(name = "F_ora_Text")
        private String F_ora_Text;
        public F_ora_Text(String F_ora_Text) {
            this.F_ora_Text = F_ora_Text;
        }
    }

    @Data
    public static class FsubHeadSuppiler {
        @JSONField(name = "FEntryId")
        private Long FEntryId;
        @JSONField(name = "FORDERID")
        private FNumber FORDERID;
        @JSONField(name = "FTRANSFERID")
        private String FTRANSFERID;
        @JSONField(name = "FChargeId")
        private FNumber FChargeId;
    }

    @Data
    public static class FsubHeadFinc {
        @JSONField(name = "FEntryId")
        private Long FEntryId;
        private String FACCNTTIMEJUDGETIME;
        @JSONField(name = "FSettleTypeID")
        private FNumber FSettleTypeID;
        @JSONField(name = "FMAINBOOKSTDCURRID")
        private FNumber FMAINBOOKSTDCURRID;
        @JSONField(name = "FEXCHANGETYPE")
        private FNumber FEXCHANGETYPE;
        private BigDecimal FExchangeRate;
        private BigDecimal FTaxAmountFor;
        private BigDecimal FNoTaxAmountFor;
        private String FISCARRIEDDATE;
    }

    /**
     * 辅助属性
     */
    @Data
    public static class FEntityDetail {
        @JSONField(name = "FEntryID", ordinal = 1)
        private int FEntryID;
        @JSONField(name = "FCOSTID", ordinal = 2)
        private FNumber FCOSTID;
        @JSONField(name = "FMATERIALID", ordinal = 3)
        private FNumber FMATERIALID;
        @JSONField(name = "FMaterialName", ordinal = 3)
        private String FMaterialName;
        @JSONField(name = "F_th", ordinal = 4)
        private String F_th;
        @JSONField(name = "F_jh", ordinal = 5)
        private String F_jh;
        @JSONField(name = "F_cz", ordinal = 6)
        private String F_cz;
        @JSONField(name = "F_hd", ordinal = 7)
        private String F_hd;
        @JSONField(name = "F_cd", ordinal = 8)
        private String F_cd;
        @JSONField(name = "F_kd", ordinal = 9)
        private String F_kd;
        @JSONField(name = "FMaterialDesc", ordinal = 10)
        private String FMaterialDesc;
        @JSONField(name = "FASSETID", ordinal = 11)
        private FNumber FASSETID;
        @JSONField(name = "FPRICEUNITID", ordinal = 12)
        private FNumber FPRICEUNITID;
        @JSONField(name = "FPrice", ordinal = 13)
        private BigDecimal FPrice;
        @JSONField(name = "FPriceQty", ordinal = 14)
        private BigDecimal FPriceQty;
        @JSONField(name = "FBASICUNITQTY", ordinal = 14)
        private BigDecimal FBASICUNITQTY;
        @JSONField(name = "FTaxPrice", ordinal = 15)
        private BigDecimal FTaxPrice;
        @JSONField(name = "F_ora_Text8", ordinal = 16)
        private String F_ora_Text8;
        @JSONField(name = "F_ora_Combo", ordinal = 17)
        private String F_ora_Combo;
        @JSONField(name = "FPriceWithTax", ordinal = 18)
        private BigDecimal FPriceWithTax;
        @JSONField(name = "FEntryTaxRate", ordinal = 19)
        private BigDecimal FEntryTaxRate;
        @JSONField(name = "FTAXCOMBINATION", ordinal = 20)
        private FNumber FTAXCOMBINATION;
        @JSONField(name = "FEntryDiscountRate", ordinal = 21)
        private BigDecimal FEntryDiscountRate;
        @JSONField(name = "FDISCOUNTAMOUNTFOR", ordinal = 22)
        private BigDecimal FDISCOUNTAMOUNTFOR;
        @JSONField(name = "FINCLUDECONTRACTCOMPCOST", ordinal = 23)
        private String FINCLUDECONTRACTCOMPCOST;
        @JSONField(name = "FNoTaxAmountFor_D", ordinal = 24)
        private BigDecimal FNoTaxAmountFor_D;
        @JSONField(name = "FAuxPropId", ordinal = 25)
        private FAuxPropId FAuxPropId;
        private BigDecimal FTAXAMOUNTFOR_D;
        @JSONField(name = "FALLAMOUNTFOR_D", ordinal = 26)
        private BigDecimal FALLAMOUNTFOR_D;
        @JSONField(name = "FINCLUDECOST", ordinal = 27)
        private String FINCLUDECOST;
        @JSONField(name = "FOUTSTOCKID", ordinal = 28)
        private List<FNumber> FOUTSTOCKID;
        @JSONField(name = "FBUYIVQTY", ordinal = 29)
        private BigDecimal FBUYIVQTY;
//        @JSONField(name = "FPURCHASEDEPTID", ordinal = 30)
//        private BigDecimal FPURCHASEDEPTID;
        @JSONField(name = "FISOUTSTOCK", ordinal = 31)
        private String FISOUTSTOCK;
        @JSONField(name = "FCOSTDEPARTMENTID", ordinal = 31)
        private FNumber FCOSTDEPARTMENTID;
        @JSONField(name = "FLot", ordinal = 32)
        private FNumber FLot;
        @JSONField(name = "FMONUMBER", ordinal = 33)
        private String FMONUMBER;
        @JSONField(name = "FMOENTRYSEQ", ordinal = 34)
        private int FMOENTRYSEQ;
        @JSONField(name = "FNORECEIVEAMOUNT", ordinal = 35)
        private BigDecimal FNORECEIVEAMOUNT;
        @JSONField(name = "FOPNO", ordinal = 36)
        private String FOPNO;
        @JSONField(name = "FNOINVOICEAMOUNT", ordinal = 37)
        private BigDecimal FNOINVOICEAMOUNT;
        @JSONField(name = "FNOINVOICEQTY", ordinal = 38)
        private BigDecimal FNOINVOICEQTY;
        @JSONField(name = "FROOTSETACCOUNTTYPE", ordinal = 39)
        private String FROOTSETACCOUNTTYPE;
        @JSONField(name = "FSEQNUMBER", ordinal = 40)
        private String FSEQNUMBER;
        @JSONField(name = "FROOTSOURCETYPE", ordinal = 41)
        private String FROOTSOURCETYPE;
        @JSONField(name = "FOPERNUMBER", ordinal = 42)
        private int FOPERNUMBER;
        @JSONField(name = "FTAILDIFFFLAG", ordinal = 43)
        private String FTAILDIFFFLAG;
        @JSONField(name = "FPROCESSID", ordinal = 44)
        private FNumber FPROCESSID;
        @JSONField(name = "FFPRODEPARTMENTID", ordinal = 45)
        private FNumber FFPRODEPARTMENTID;
        @JSONField(name = "FWWINTYPE", ordinal = 46)
        private String FWWINTYPE;
        @JSONField(name = "FIsFree", ordinal = 47)
        private String FIsFree;
        @JSONField(name = "FStockUnitId", ordinal = 48)
        private FNumber FStockUnitId;
        @JSONField(name = "FStockQty", ordinal = 49)
        private BigDecimal FStockQty;
        @JSONField(name = "FStockBaseQty", ordinal = 50)
        private BigDecimal FStockBaseQty;
        @JSONField(name = "FPriceBaseDen", ordinal = 51)
        private BigDecimal FPriceBaseDen;
        @JSONField(name = "FStockBaseNum", ordinal = 52)
        private BigDecimal FStockBaseNum;
        @JSONField(name = "FOrderEntryID", ordinal = 53)
        private int FOrderEntryID;
        @JSONField(name = "FORDERENTRYSEQ", ordinal = 54)
        private int FORDERENTRYSEQ;
        @JSONField(name = "FBUYIVINIQTY", ordinal = 55)
        private BigDecimal FBUYIVINIQTY;
        @JSONField(name = "FPushRedQty", ordinal = 56)
        private BigDecimal FPushRedQty;
        @JSONField(name = "FBUYIVINIBASICQTY", ordinal = 57)
        private BigDecimal FBUYIVINIBASICQTY;
        @JSONField(name = "FIVINIALLAMOUNTFOR", ordinal = 58)
        private BigDecimal FIVINIALLAMOUNTFOR;
        @JSONField(name = "FDIFFAMOUNTEXRATE", ordinal = 59)
        private BigDecimal FDIFFAMOUNTEXRATE;
        @JSONField(name = "FDIFFALLAMOUNTEXRATE", ordinal = 60)
        private BigDecimal FDIFFALLAMOUNTEXRATE;
        private int FSRCROWID;
        private String FMaterialName_P;
        private FNumber FMATERIALID_P ;
        private String F_ora_Date1;
        private FNumber F_ora_Base;
        private BigDecimal FDIFFAMOUNT;
        private String F_ora_Text;
        private String F_ora_Text1;
        private BigDecimal FDIFFALLAMOUNT;
        private String F_ora_Text2;
        private F_ora_Text F_ora_Base1;
        private String F_ora_Text3;
        private int F_ora_Integer;
        private String F_ora_Text4;
        private FNumber F_ora_Base2;

        @JSONField(name = "FCostName")
        private String FCostName ;
        private List<FTaxDetailSubEntity> FTaxDetailSubEntity;
        // 其他嵌套
    }

    @Data
    public static class FTaxDetailSubEntity {
        private BigDecimal FDetailID;
        private FNumber FTaxRateId;
        private BigDecimal FTaxRate;
        private BigDecimal FTaxAmount_T;
        private BigDecimal FCostPercent;
        private BigDecimal FCostAmount;
        private BigDecimal FPrice;
        private String FVAT;
        private String FSellerWithholding;
        private String FBuyerWithholding;
    }

    @Data
    public static class FEntityPlan {
        private BigDecimal FEntryID;
        private FNumber FENDDATE;
        private BigDecimal FPAYAMOUNTFOR;
        private BigDecimal FPAYRATE;
        private BigDecimal FPURCHASEORDERID;
        private BigDecimal FPAYABLEENTRYID;
        private FNumber FMATERIALID_P;
        private FNumber FPRICEUNITID_P;
        private String FPRICE_P;
        private String FQTY_P;
        private String FPURCHASEORDERNO;
        private String FMATERIALSEQ;
        private String FRELATEHADPAYQTY;
        private String FNOTVERIFICATEAMOUNT;
        private String FCOSTID_P;
        private String FREMARK;
    }

    @Data
    public static class FRecInvInfo {
        private BigDecimal FEntryID;
    }

    @Data
    public static class FAuxPropId {
        /**
         * 材质
         */
        @JSONField(name = "FAUXPROPID__FF100001")
        public FNumber FAUXPROPID__FF100001;
        /**
         * 厚
         */
        @JSONField(name = "FAUXPROPID__FF100002")
        public FNumber FAUXPROPID__FF100002;
        /**
         * 宽
         */
        @JSONField(name = "FAUXPROPID__FF100003")
        public String FAUXPROPID__FF100003;
        /**
         * 长
         */
        @JSONField(name = "FAUXPROPID__FF100004")
        public String FAUXPROPID__FF100004;

        /**
         * 品牌
         */
        @JSONField(name = "FAUXPROPID__FF100005")
        public FNumber FAUXPROPID__FF100005;
        /**
         * 规格型号
         */
        @JSONField(name = "FAUXPROPID__FF100006")
        public FNumber FAUXPROPID__FF100006;
        /**
         * 库存项目
         */
        @JSONField(name = "FAUXPROPID__FF100007")
        public String FAUXPROPID__FF100007;
        /**
         * 库存备注
         */
        @JSONField(name = "FAUXPROPID__FF100009")
        public String FAUXPROPID__FF100009;

        @JSONField(name = "FAUXPROPID__FF100016")
        public FNumber FAUXPROPID__FF100016;

        /**
         * 性能等级
         */
        @JSONField(name = "FAUXPROPID__FF100017")
        public FNumber FAUXPROPID__FF100017;


        /**
         * 表面处理
         */
        @JSONField(name = "FAUXPROPID__FF100018")
        public FNumber FAUXPROPID__FF100018;

        /**
         * 规格/品牌
         */
        @JSONField(name = "FAUXPROPID__FF100019")
        public FNumber FAUXPROPID__FF100019;

        /**
         * 型号/材质
         */
        @JSONField(name = "FAUXPROPID__FF100020")
        public FNumber FAUXPROPID__FF100020;


        /**
         * 色号
         */
        @JSONField(name = "FAUXPROPID__FF100021")
        public FNumber FAUXPROPID__FF100021;

        /**
         * 特殊要求
         */
        @JSONField(name = "FAUXPROPID__FF100022")
        public FNumber FAUXPROPID__FF100022;

        @JSONField(name = "FAUXPROPID__FF100023")
        public FNumber FAUXPROPID__FF100023;
    }

}




